<form class="docs-search d-flex align-items-center">
  <button class="btn docs-toggle d-md-none p-0 mr-3" type="button" data-toggle="collapse" data-target="#docs-nav" aria-controls="docs-nav" aria-expanded="false" aria-label="Toggle section navigation">
    <span><i class="fas fa-bars"></i></span>
  </button>

  {{ if eq site.Params.search.engine 1 }}
  <button class="form-control sidebar-search js-search">
    <i class="fas fa-search pr-2"></i>
    <span class="sidebar-search-text">{{ i18n "search_placeholder" }}</span>
    <span class="sidebar-search-shortcut">/</span>
  </button>
  {{ end }}
</form>

<nav class="collapse docs-links" id="docs-nav">
  {{ $current_node := . }}
  {{ $menu_name := "" }}
  {{ $order_by := site.Params.books.order_by | default "weight" }}
  {{ $query := "" }}
  {{ $root_page := .GetPage "/_index.md" }}
  {{ $is_root := false}}

  {{/* Case where homepage is a book */}}
  {{ if $root_page | and (eq $root_page.Type "book") }}
    {{ $is_root = true}}
    <ul class="nav docs-sidenav">
      <li class="{{ if .IsHome }}active{{ end }}"><a href="{{ $root_page.RelPermalink }}">{{$root_page.Title}}</a></li>
    </ul>
    {{- if eq $order_by "title" -}}
      {{- $query = .Site.Home.Sections.ByTitle  -}}
    {{- else if eq $order_by "title_desc" -}}
      {{- $query = .Site.Home.Sections.ByTitle.Reverse  -}}
    {{- else -}}
      {{- $query = .Site.Home.Sections.ByWeight -}}
    {{- end}}

  {{else}}
    {{/* Case where homepage is NOT a book */}}

    {{ if eq .FirstSection.Type "book" }}
      {{/* Case where first section is a book. */}}

      {{ $menu_name = (path.Base (path.Split .FirstSection).Dir) }}
      {{/* For any folder named `updates`, use descending title order (e.g. latest release note first). */}}
      {{ $order_by = cond (eq $menu_name "updates") "title_desc" $order_by }}
      {{- if eq $order_by "title" -}}
        {{- $query = where .Site.Home.Sections.ByTitle "Section" $menu_name -}}
      {{- else if eq $order_by "title_desc" -}}
        {{- $query = where .Site.Home.Sections.ByTitle.Reverse "Section" $menu_name -}}
      {{- else -}}
        {{- $query = where .Site.Home.Sections.ByWeight "Section" $menu_name -}}
      {{- end -}}

      {{- range $query -}}
        {{ template "book-menu" dict "sect" . "current_node" $current_node "order_by" $order_by "is_root" $is_root }}
      {{- end -}}

    {{ else }}
      {{/* Case where first section is a general page (e.g. book of books). */}}

      {{ $first_node := $current_node }}
      {{ if ne .Parent .FirstSection }}
        {{ if ne .Parent.Parent .FirstSection }}
          {{ $first_node = $current_node.Parent.Parent }}
        {{else}}
          {{ $first_node = $current_node.Parent }}
        {{end}}
      {{end}}

      {{- if eq $order_by "title" -}}
        {{- $query = $first_node.Pages.ByTitle -}}
      {{- else if eq $order_by "title_desc" -}}
        {{- $query =  $first_node.Pages.ByTitle.Reverse -}}
      {{- else -}}
        {{- $query =  $first_node.Pages.ByWeight -}}
      {{- end -}}
      {{ template "book-menu" dict "sect" $first_node "current_node" $current_node "order_by" $order_by "is_root" $is_root }}
    {{end}}
  {{end}}
</nav>
